查看原文
其他

干货丨Material Design 全面解析(二) 响应式栅格布局

长弓小子 长弓小子 2021-01-31
    欢迎关注「长弓小子」
 我们都是为梦想一起努力的人



Material Design的栅格布局是一种响应式布局方式,应用此方式设计开发的页面可适应不同的屏幕尺寸和方向,确保内容呈现的一致性。本文内容较为全面,如果你耐心看完,相信会有不小的收获。

   全文共 2734 字 21 图(含 6 动图),阅读需要 8 分钟



什么是响应式栅格布局


Material Design(质感设计/拟真设计)是Google在2014年推出的一种应用于Android平台的全新的设计语言(可阅读文章:干货丨Material Design 全面解析 (一) 进行了解)Material Design的设计风格来源于印刷领域,因而采用印刷领域的工具和方法,如基准网格和结构模版,通过重复视觉元素,搭建结构网格以及制定跨平台和屏幕尺寸的间距规范,保证不同环境下设计效果的一致性,简化了创建可扩展应用的过程,被称为响应式栅格布局。

  • 响应式:响应式界面能够适应不同的设备界面尺寸,描述响应式界面最著名的一句话就是 Content is like water —— 如果将屏幕看作容器,那么内容就像水一样。


  • 栅格:以规则的网格阵列来规范网页中的内容布局及信息分布,很像传统的印刷排版方式,即在一个特定区域内划分出有规律的格子,并依靠这些格子进行有规律的版面布局。


需要注意的是,Material Design响应式栅格布局是有断点(Breakpoints)的:


  • 断点:指页面关键的宽度类别或宽度值,通俗点说就是因为屏幕越宽,列宽和间距就越大,为了方便计算取整,列宽和间距在屏幕达到某一些特定宽度时才会发生变化。






构成要素

Material Design的响应式栅格布局由间距边距这三个基本元素构成。此外,栅格布局还有最小单位总宽度列数这几个要素:

  • 列(columns):列的宽度被称为列宽,使用百分比来定义而不是固定值,以便可以灵活地适应任何屏幕大小。网格中显示的列的数量由屏幕的断点确定,达到断点时,列数就会发生变化


  • 间距(gutters):也被称为水槽 / 沟,间距同列一样,在每个断点范围内的个数是固定的,达到断点时,间距数量就会发生变化


  • 边距(margins):指内容和屏幕左右边缘之间的空间。边距宽度在每个断点范围内的值是固定的达到断点时,宽度就可以发生变化边距的宽度通常是间距的倍数。


  • 最小单位:栅格的基础单位,栅格内容元素和布局规则都是基于它整数倍递增。目前主流桌面设备的屏幕分辨率在竖直与水平方向基本都可以被8整除,因此通常使用8px作为最小单位,如一个列的宽度是24px、80px等,可以理解为一个8px X 8px的小方格就是整个栅格的基础单位。


  • 总宽度:栅格的总宽度,总宽度 = 列宽 x 列数+ 间距宽 x 间距数 + 边距 x 2。


  • 列数:即页面最大宽度下的列的数量网页端常用12列或24列移动端通常用6列也可以根据内容自定数量。




在非触控和web平台,大多都是竖直滚动的页面设计,水平滚动设计并不常见,但如果出现,也可以用水平栅格进行布局,如下图:



顺便一提,我们可以利用Sketch软件做简单的栅格布局,调出该功能的路径为:菜单栏-视图-画布-网格设置/布局设置,如下图:


举个淘宝页面的例子:完整内容展示布局的网页总宽度为1200px,列数为24列,间距为10px;浏览器缩小时内容展示布局的总宽度为990px,列数为20列,间距为10px,下图:





断点系统

上文提到过,断点指页面关键的宽度类别,当页面达到这些类别时,栅格布局会发生变化,即在给定的断点范围内,布局会根据屏幕大小和方向进行相应调整。Material Design通常会为以下的断点适配布局:480dp、600dp、840dp、960dp、1280dp、1440dp、以及 1600dp(dp:Density-independent pixel,是Android平台开发用的长度单位,1dp表示在屏幕像素点密度为160ppi时1px长度),其中在600dp和1600dp时要注意:

  • 600dp:

  • 布局宽度小于600dp时,可以使用单级的内容层次填满屏幕(如:可以显示标题或详细信息,但两者不能同时显示)

  • 布局宽度超过600dp时,可以同时放置两级内容层次(如:可以同时显示标题和详细信息)


  • 1600dp:为最大屏幕宽度,当布局宽度超过1600dp时,可以让布局宽度一直增加,直到达到最大宽度。此时,栅格布局可以执行以下的某一项规则:

  • 内容区域变成居中对齐,增加内容两侧的边距宽度

  • 内容区域保持左对齐,同时不断增加内容右侧边距宽度

  • 内容区域宽度继续增加,同时展示出更多额外的内容


Material Design常用断点见下图:



Material Design总结了在不同屏幕、设备和方向下,断点、列和宽度的规范。对于某些尺寸,即使设备发生了旋转,值也保持不变,见下图:




界面行为

了解了以上这些概念,接下来让我们看看栅格布局到底是如何让一个页面流畅的进行布局切换的。当屏幕大小改变时,页面中的元素或区域通常会在栅格行为UI界面的可见性这两个方面进行变化,产生一些特定的行为来适配屏幕。

  • 栅格行为:分为流体栅格和固定栅格


  • 流体栅格:又称为弹性栅格,这种栅格的列可缩放和调整内容大小

  • 固定栅格:使用固定大小的列,可以调整边距大小,在每个断点范围内保持界面内容不变。固定栅格的列宽和边距宽只能在指定的断点处更改


  • UI界面可见性:所谓可见性,就是指能否看见,元素或区域通常有三种行为:永久可见持续可见临时可见


  • 永久可见:元素或区域始终可见,通常是不可重叠的区域,如导航抽屉



  • 持续可见:持续可见的区域是指可以随时根据命令显示的区域,它们可以被打开或关闭。当它们出现时,它们会压缩其他内容和栅格

  • 临时可见:临时可见的区域是指暂时出现的区域,出现时,它们不会影响栅格。当它们可见时,可以通过点击其区域中的项目或其区域外的任意位置来隐藏它们,此时界面中的其他元素和区域是不可点击的

需要注意的是,Material Design为了提高用户使用不同设备的熟悉度,规定在PC端设计的UI元素应该与移动UI的组织方式保持基本一致,如下图:



应用模式与准则

这里为大家分别总结了Material Design的常见的响应式应用模式和栅格应用准则。

  • 响应式模式:随着屏幕尺寸和空间的增加,可以应用以下响应模式,并加以流畅的动效,创造良好的用户体验:


  • 出现在小屏幕中隐藏的 UI 元素,随着屏幕可用空间的增加就会出现,如侧边栏这样的元素会随着屏幕变宽而变得可见;一些原本隐藏的 UI 功能会全部显现;文字内容会增加等,见下图:



  • 变形:一个 UI 元素可以从一种格式变形成另一种格式,如侧边栏导航可能变形成Tab选项卡;列表可能变形成网格列表;菜单可能变形成工具栏中的图标等,见下图:



  • 分隔:一个图层的 UI 可能会被划分到新的可用空间中,如侧边导航、列表内容和列表每一项的详细内容被分隔以填满整个视图,见下图:



  • 重排:UI 可以在变宽的屏幕中被重新排布,见下图:



  • 位移:UI 组件可以被移动到更合适的位置,见下图:



  • 栅格应用准则:这里介绍一些栅格布局基本的应用准则和技巧,但要明白在实际设计中其实没有任何硬性的规定,还要结合页面自身的特点进行应用:


  • 内容元素位于若干列上:内容排布在列上,并在列宽以内内容边缘不能出现在间距上,但有时如果我们把内容都按照列宽排布,视觉效果可能会不太好,最佳的处理方式是将整个元素放在一个不可见的,更大的容器内,再将容器排布在列上。见下图:



  • 只要父级元素对齐栅格,子级元素不必完全对齐:有时设计内容一半是图片,一半是文字,图片和文字没有完全落在一列上,其实不用担心,只要父级容器对齐栅格列宽即可,见下图:



  •  除非有意,否则不要把列作为边距的一部分:所有重要内容都应该与栅格列宽相适应,不要将列宽当成留白或边距的一部分,而是要利用列外的部分当作留白区域,以方便代码的实现(所以如果需要一个1200px宽的页面,这并不意味着你的设计就是1200px宽,而是说设计内容宽度在1200px的画布内,实际内容占位可能是960px,这样就会有空间留出外边距和留白区域),见下图:


  • 完全出血的元素、纹理或图形应该设计在画布边缘,作为出血的列:如下图的顶部图片被设计成完全出血:



   Material Design的体系和逻辑目前已经发展的非常完善,有很多内容值得思考和研究。关于Material Design更多详细内容,会在日后为大家推送,欢迎关注。


本文图片及内容参考来源:
https://www.uisdc.com/responsive-grids-design  
https://www.uisdc.com/grid-system-basics
https://www.uisdc.com/grid-design-principles-and-techniques  
https://www.mdui.org/design/layout/principles.html



 




- END -

关注「长弓小子」公众号
欢迎「留言」共同切磋
一起追逐更优秀的自己



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存